package bszt.redbook;

import java.util.Scanner;

public class Code01 {

    /**
     * 问题描述
     * K小姐是一位热爱探险的旅行者，她对山峰情有独钟。最近，她在一片神秘的山脉中发现了一些连续的山峰。为了研究这些山峰的形状，她决定将山峰的高度记录下来，并寻找其中最长的"山峰数组"
     * 一个"山峰数组"定义为：在某个位置存在一个最高点，且该位置左右两边的高度依次严格递减。用数学语言描述，即存在x使得a_{i-1} < a_i且a_i > a_{i+1}
     * K小姐想知道，在她记录的所有子数组中，最长的"山峰数组"的长度是多少
     * <p></p>
     * 输入格式
     * 第一行输入一个整数n，表示数组的长度
     * 第二行输入n个整数，表示数组的值
     * <p></p>
     * 输出格式
     * 输出一个整数，表示最长的"山峰数组"的长度
     */

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        System.out.println(findLongestPeak(arr));
    }

    private static int findLongestPeak(int[] arr) {
        int n = arr.length;
        if (n < 3) return 0;

        int[] l = new int[n];
        int[] r = new int[n];

        for (int i = 1; i < n; i++) {
            if (arr[i] > arr[i - 1]) {
                l[i] = l[i - 1] + 1;
            }
        }


        for (int i = n - 2; i >= 0; i--) {
            if (arr[i] > arr[i + 1]) {
                r[i] = r[i + 1] + 1;
            }
        }

        int maxLength = 0;
        for (int i = 1; i < n - 1; i++) {
            if (l[i] > 0 && r[i] > 0) {
                maxLength = Math.max(maxLength, l[i] + r[i] + 1);
            }
        }

        return maxLength;
    }
}
